# -*- coding: utf-8 -*-
"""
@Time ： 2023/10/18 21:33
@Auth ： y.h
@File ：many_row_and_row_calculation_properties.py
@IDE ：PyCharm
@Motto：The sooner you start to code, the longer the program will take. —— Roy Carlson
"""
import pandas


# todo 为了预防内存溢出问题,只允许一维数组间运算
class 多行与多行迭代运算配置文件:
    __df_1 = None
    __col_index_1 = 0
    __row_begin_index_1 = 0
    __row_end_index_1 = 0

    __df_2 = None
    __col_index_2 = 0
    __row_begin_index_2 = 0
    __row_end_index_2 = 0

    __operator = None
    __return_table_style = False

    # 数据集1配置 ------>>>>>>>>>  开始
    def get_df_1(self):
        return self.__df_1

    def 配置数据集1(self, df):
        if type(df) != type(pandas.DataFrame()):
            print(f"多行与多行迭代运算配置文件->数据集1配置错误,需要{type(pandas.DataFrame())},传入的参数为{type(df)}")
            exit(True)
        else:
            self.__df_1 = df
        return self

    def get_col_index_1(self):
        return self.__col_index_1

    def 配置数据集1列索引(self, col_index):
        if type(col_index) != type(int()):
            print(f"多行与多行迭代运算配置文件->配置数据集1列索引错误,需要{type(int())},传入的参数为{type(col_index)}")
            exit(True)
        else:
            self.__col_index_1 = col_index
        return self

    def get_row_begin_index_1(self):
        return self.__row_begin_index_1

    def 配置数据集1起始行(self, begin_index):
        if type(begin_index) != type(int()):
            print(
                f"多行与多行迭代运算配置文件->配置数据集1起始行错误,需要{type(int())},传入的参数为{type(begin_index)}")
            exit(True)
        else:
            self.__row_begin_index_1 = begin_index
        return self

    def get_row_end_index_1(self):
        return self.__row_end_index_1

    def 配置数据集1截止行(self, end_index):
        if type(end_index) != type(int()):
            print(f"多行与多行迭代运算配置文件->配置数据集1截止行错误,需要{type(int())},传入的参数为{type(end_index)}")
            exit(True)
        else:
            self.__row_end_index_1 = end_index
        return self

    # 数据集1配置 ------>>>>>>>>>  结束

    # 数据集1配置 ------>>>>>>>>>  开始
    def get_df_2(self):
        return self.__df_2

    def 配置数据集2(self, df):
        if type(df) != type(pandas.DataFrame()):
            print(f"多行与多行迭代运算配置文件->数据集2配置错误,需要{type(pandas.DataFrame())},传入的参数为{type(df)}")
        else:
            self.__df_2 = df
        return self

    def get_col_index_2(self):
        return self.__col_index_2

    def 配置数据集2列索引(self, col_index):
        if type(col_index) != type(int()):
            print(f"多行与多行迭代运算配置文件->配置数据集2列索引错误,需要{type(int())},传入的参数为{type(col_index)}")
            exit(True)
        else:
            self.__col_index_2 = col_index
        return self

    def get_row_begin_index_2(self):
        return self.__row_begin_index_2

    def 配置数据集2起始行(self, begin_index):
        if type(begin_index) != type(int()):
            print(
                f"多行与多行迭代运算配置文件->配置数据集2起始行错误,需要{type(int())},传入的参数为{type(begin_index)}")
            exit(True)
        else:
            self.__row_begin_index_2 = begin_index
        return self

    def get_row_end_index_2(self):
        return self.__row_end_index_2

    def 配置数据集2截止行(self, end_index):
        if type(end_index) != type(int()):
            print(f"多行与多行迭代运算配置文件->配置数据集2截止行错误,需要{type(int())},传入的参数为{type(end_index)}")
            exit(True)
        else:
            self.__row_end_index_2 = end_index
        return self

    # 数据集1配置 ------>>>>>>>>>  结束

    # 通用配置 --->>>>>>>>>>>  开始

    def get_operator(self):
        return self.__operator

    def 配置运算符(self, operator):
        self.__operator = operator
        return self

    def get_return_table_style(self):
        return self.__return_table_style

    def 配置返回数据表格式(self, flag: bool):
        self.__return_table_style = flag
        return self

    # 通用配置------------->>>>>>>>>  结束
